Cloud computing is the use of computing resources (hardware and software) which are available in a remote location and accessible over a network, such as the Internet. Users are able to buy these computing resources (including storage and computing power) as a utility on demand. Cloud computing entrusts remote services with a user's data, software and computation. Use of virtual computing resources can provide a number of advantages including cost advantages and/or ability to adapt rapidly to changing computing resource needs.
Cloud computing environments can include database systems. Database systems typically include a database manager that maintains the integrity of a database as changes are made. The changes are recorded in a database journal (usually a circular log in a dedicated area of the system) before committing the changes to the database. Thus, the journal is a listing of pending changes to be made to database records. In the event of a system crash or power failure, such database systems are quicker to bring back online and less likely to become corrupted using the journal. Journaling can also be applied to file systems. After a crash, recovery simply involves reading the journal from the database or file system and replaying changes from the journal until the system is consistent again. Updating file or database systems to reflect changes to files and/or data usually requires many separate write operations.
Some database or file systems allow the journal to grow, shrink and be re-allocated just as a regular file. Some file systems may also allow external journals on a separate device, such as a solid-state disk or battery-backed non-volatile RAM. Changes to the journal may themselves be journaled for additional redundancy, or the journal may be distributed across multiple physical volumes to protect against device failure.
Flushing the journal (i.e., committing the changes in the journal to the database) is most efficiently done by acting on multiple journal entries close in time. Thus, a database manager can wait until a predetermined number of journal entries are reached and then flush the entirety of the journal as a single task before returning to other tasks. Once the journal is flushed (e.g., all entries are saved to disk) the journal can be cleared and readied for refilling. However, in systems where the journal entries cannot be cleared, the journal can become large, which decreases efficiency and increases a likelihood of error.
Nonetheless, journal management is desirable to maintain the journal at as small as possible so as to increase efficiency during flushing.